26
תגובות

מערכת התחברות ראשונה (:

פתח phpon ,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="he" >
<head>
<title>Stepping Through an Array </title>
<link rel="stylesheet" type="text/css" href="common.css" />
<style type="text/css">
</style>
.error { background: #d33; color: white; padding: 0.2em; }
</head>
<body>
<?php
if ( isset( $_POST["submitButton"] ) ) {
  processForm();
} else {                        
  displayForm( array() );
}
 function validateField( $fieldName, $missingFields ) {
    if ( in_array( $fieldName, $missingFields ) ) {  
    echo ' class="error"';
  }
}
function setValue( $fieldName ) {
  if ( isset( $_POST[$fieldName] ) ) {  
    echo $_POST[$fieldName];
  }
}
function setChecked( $fieldName, $fieldValue ) {
  if ( isset( $_POST[$fieldName] ) and $_POST[$fieldName] == $fieldValue )  {  
    echo ' checked="checked"';
  }
}
function setSelected( $fieldName, $fieldValue ) {
  if ( isset( $_POST[$fieldName] ) and $_POST[$fieldName] == $fieldValue )  {  
    echo ' selected="selected"';
  }
}

function processForm() {
  $requiredFields = array( "firstName", "lastName", "password1",
 "password2", "gender" );
  $missingFields[] = array();

  foreach ( $requiredFields as $requiredField )  {
    if ( !isset( $_POST[$requiredField] ) or !$_POST[$requiredFiled]  ) {
    $missingFields[] = $requiredField;
  }
  }

  if ( $missingFields ) {
    displayForm( $missingFields );
  } else {
    displayThanks();
  }
}  
 
function displayForm( $missingFields ) {
?>

    <h1>מערכת התחברות</h1>  
 
  <?php if ( $missingFields ) { ?>
  <p class="error">There were some problems with the form you submitted.
Please complete the fields highlighted below and click Send Details to
resend the form.</p>
    <?php } else { ?>
  <p>Thanks for choosing to join The Widget Club. To register, please
fill in your details below and click Send Details. Fields marked with an
asterisk (*) are required.</p>
    <?php } ?>
 
  <form action="formfi.php"  method="post">
    <div style="width: 30em;">
     
    <label for="lastName"<?php validateField( "lastName",
$missingFields ) ?>>First name *</label>
    <input type="text" name="lastName" id="lastName" value=
"<?php setValue( "lastName" ) ?>" />   
   
    <label for="passsword1"<?php if ( $missingFields ) echo
' class="error"' ?>>Choose a password *</label>
        <input type="passsword" name="password1" id="password1" value="" />
    <label for="passsword2"<?php if ( $missingFields ) echo
' class="error"' ?>>Retype password *</label>
        <input type="passsword" name="password2" id="password2" value="" />
   
    <label<?php validateField( "gender", $missingFields ) ?>>Your
gender: *</label>
        <label for="genderMale">Male</label>
    <input type="radio" name="gender" id="genderMale" value=
"M"<?php setChecked( "gender", "M" )?> />
        <label for="genderFemale">Female</label>
    <input type="radio" name="gender" id="genderFemale" value=
"F"<?php setChecked( "gender", "F" )?> />
    wonder
    <label for="favoritWidget">What's favorite widget? *</label>
    <select name="favoriteWidget" id="favoriteWidget" size="1">
      <option value="superWidget"<?php setSelected( "favoriteWidget",
"superWidget" ) ?>>The SuperWidget</option>
          <option value="megaWidget"<?php setSelected( "favoriteWidget",
"megaWidget" ) ?>>The MegaWidget</option>
          <option value="wonderWidget"<?php setSelected( "favoriteWidget",
"wonderWidget" ) ?>>The WonderWidget</option>
        </select>
   
    <label fir="newsletter">Do you want to receive our newsletter?
</label>
        <input type="checkbox" name="newsletter" id="newsletter" value="yes"
<?php setChecked( "newsletter", "yes" ) ?> />

        <label for="comments">Any comments?</label>
        <textarea name="comments" id="comments" rows="4" cols="50"><?php
setValue( "comments" )  ?></textarea>

        <div style="clear: both;">
      <input type="submit" name="submitButton" id="submitButton" value=
"Send Details" />
          <input type="reset" name="resetButton" id="resetButton"
value="Reset Form" style="margin-right: 20px;" />
        </div>
   
   </div>
   </form>
<?php
}

function displayeThanks() {
?>
    <h1>Thank You</h1> 
    <p>p>Thank you, your application has been received.</p>
<?php>
}
?>

  </body>
</html>



הוא רושם לי שגיאה 137

אני לומד מphp 5.3 של wrox, כדאי לעבור למדריך אחר?
למרות שהם מסבירים הרבה

26 תשובות

avatar ענה OrelBeY ב 29 לאפריל 2013 #

לפי מה שהבנתי מגיגול קצר, הבעיה היא כנראה במחשב/דפדפן שלך. תגגל את זה, וסביר להניח שתמצא פתרונות.
בקשר לקוד עצמו - עוד מעט אערוך ואוסיף הערות.

עריכה:
- קוד ה-CSS שלך מחוץ לאלמנט style.
- בפונקציה procesForm:

$missingFields[] = array();

תוריד את ה-[]. זה פשוט ייצור מערך בתור מערך.
לא קראתי יותר מדי, אבל בהחלט כדי לך ללמוד על הדברים הבאים אם אתה עדיין לא יודע אותם:
- תכנות מונחה עצמים
- MVC
אין שום בעיה ב-Beginning PHP 5.3 של Matt Doyle, רק קח בחשבון שעוד מעט כבר יוצא PHP 5.5. אל תשכח להתעדכן. (וכמובן ללמוד על עוד נושאים. הספר הזה לא מכסה את הכול. כשתגמור אותו אתה מוזמן לשאול פה, ותקבל בשמחה שמות של ספרים/אתרים...) בהצלחה. :-)

avatar ענה phpon ב 29 לאפריל 2013 #

גם אחריי שתיקנתי..נאדה
ותודה רבה אור ל273 !!!

avatar ענה OrelBeY ב 29 לאפריל 2013 #

הכינוי נובי, אני יודע. יש לו היסטוריה ארוכה. תקרא לי אוראל. :-)

avatar ענה phpon ב 01 למאי 2013 #

אהה לא היה לי מושג חחחחח, אין בעייה תודה אוראל!!
והקפצה!! עדיין לא עבד..
יש למישהו סקייפ או טייםוויר ויכול לעזור לי?

avatar ענה OrelBeY ב 01 למאי 2013 #

"לפי מה שהבנתי מגיגול קצר, הבעיה היא כנראה במחשב/דפדפן שלך. תגגל את זה, וסביר להניח שתמצא פתרונות."
בדקת?

avatar ענה phpon ב 01 למאי 2013 #

לא, זה משהו בקוד....
תיקנתי עוד כמה בעיות. ואשמח להמלצות לספרים טובים בתחום על
oop בעיקר. עכשיו הבעייה הרצינית היא שאני לא רוצה רק להעתיק מערכות מספרים כמו שמלמדים, אלא אשכרה להבין איך המערכת עובדת ולדעת לבנות לבד..

avatar ענה phpon ב 01 למאי 2013 #

לא, זה משהו בקוד....
תיקנתי עוד כמה בעיות. ואשמח להמלצות לספרים טובים בתחום על
oop בעיקר. עכשיו הבעייה הרצינית היא שאני לא רוצה רק להעתיק מערכות מספרים כמו שמלמדים, אלא אשכרה להבין איך המערכת עובדת ולדעת לבנות לבד..

avatar ענה phpon ב 03 למאי 2013 #

הסתדתר, מתחיל עוד פרויקטים קטנים בקרוב!
אשמח לקבל המלצות לספרים/אתרים בנושאים הבאים:
php mvc, oop וכל זה חחח.

avatar ענה OrelBeY ב 03 למאי 2013 #

אני אכתוב משהו מאורגן יותר ואפרסם כאן מחר או עוד כמה ימים. :-)

רק נשמח לדעת איך סידרת את זה. :-)

avatar ענה yonikal56 ב 04 למאי 2013 #

בעיות כאלה אפשר לפתור בעזרת האחסון של 00webhost אחרי שמעלים לשרת דרך FTP אני יכול לעשות מדריך ולפרסם קשור שם זה כותב לך מה השגיאה באיזה קובץ ובאיזה שורה. דרך אגב
if(issest אפשר לשנות לקצור:
אם קיים המשתנה-
(if($x
אם לא קיים המשתנה-
(if(!$x

avatar ענה phpon ב 05 למאי 2013 #

הצלחתי בסוף!!
פשוט היה
<?php>
}
?> ועוד משהו שאמרת לי לתקן וזה עבד. :D

avatar ענה yonikal56 ב 05 למאי 2013 #

יופי

avatar ענה OrelBeY ב 05 למאי 2013 #

היי, יוני. הייתי ממליץ לך לעבור על הנושאים האלה שוב. ההבדל בין isset לבין פשוט לשים משתנה בתור ביטוי הוא ש-isset בודק אם המשתנה קיים (כלומר לא NULL), ומה שהצעת בודק אם הערך שלו שווה ל-true, שזה דבר אחר לחלוטין (ועוד בלי להזכיר שזה יזרוק לך שגיאה אם המשתנה לא קיים, שזה מה שהיית רוצה לבדוק אם אתה משתמש ב-isset.)
כנ"ל לגבי ההפך ("!").

avatar ענה yonikal56 ב 06 למאי 2013 #

אני משתמש ב משתנה בלי כלום לבדיקת עם קיים ובelse אם הוא לא קיים נגיד להרשמה אפשר להשתמש עם לחצו על שלח אז שיבדוק עם כל השדות מלאות וכנ''ל למקרה של מספר תווים ששם אבל כן חייב לשים strln אבל בלי isset זה רק קצור זה לא משנה כלום בפקודה.

avatar ענה phpon ב 06 למאי 2013 #

אשמח לקבל ספרים בMvc oop וכל זה!
+כדאי להתחיל לעבור בדוקומנטציה? ואם כן מאיפה בערך?
ודרך אגב, המדריך בוובמאסטר טוב?

avatar ענה yonikal56 ב 06 למאי 2013 #

דוקומנטציה דרך php.net/manuel קשור מלא:
http://php.net/manual/fr/manual.php

avatar ענה intval ב 06 למאי 2013 #

התחברות מעולה.
בוודאות יותר טוב מההתחברות הראשונה שאני כתבתי :)
כל הכבוד והמשך כך.

avatar ענה OrelBeY ב 06 למאי 2013 #

עוד מעט אני אגיב עם רשימה של ספרים, אבל לבינתיים (ליוני) - בכלל קראת את מה שכתבתי? הסברתי ש-isset זה לא קיצור של זה.
מסכים ב-100% עם אלכס. מצטער שלא ראיתי את הטוב, ורק הערתי על תיקונים. :-)

avatar ענה yonikal56 ב 06 למאי 2013 #

אני קורא מה שיש לי זמן אני די עסוק בזמן האחרון PHP אני לא מומחה אני צריך לצבור ניסיון בשביל להשתפר אני יודע ברמה בינונית אני צובר ניסיון בבניה בעצמי ואז לומד OOP אבל אני לומד בו זמנית גם CSS התחלתי לא מזמן וJS סיימתי לא מזמן אז אני די עסוק וקורא רק הודעה ראשונה בלי מה שעונים להודעה.

avatar ענה phpon ב 06 למאי 2013 #

intval מצטער, למדתי לבנות אתזה מספר php 5.3 של מאט דויל ככה שהקוד לא שלי, מצטער לא הסברתי את עצמי נכון...
אני אנסה בשבוע הקרוב לשבת על מערכת משלי+אני מתחיל ללמוד בקרוב על file :D

avatar ענה intval ב 07 למאי 2013 #

:)
פעם למדתי visual basic מתוך ספר תלמוד ענקי ושמן באנגלית וכל מה שהייתי עושה, זה מדפדף לקטע קוד הבא, מעתיק אותו אחד לאחד, משנה את המשות של השדות\כפתורים ומריץ. אחרי זה משנה עוד קצת, מוסיף שדה משלי, מוחק כפתור שניים, וכו'

avatar ענה OrelBeY ב 07 למאי 2013 #

רשימת ספרים (PHP & MySQL):

שלב א':
- תגמור את הספר שכבר יש לך. :-)
- PHP and MySQL Web Development (4th Edition)
לא יודע עדיין לגבי המהדורה הבאה, אבל ההסברים בספר הזה מעולים, והוא מקיף הרבה חומר שספרים בסיסיים אחרים אולי לא יכסו. חיסרון: קטעי קוד ופרויקטים ברמה של מתחילים. לא הייתי דואג לגבי זה יותר מדי, כי זה אמור להיות ספר בסיסי.
- PHP Master: Write Cutting Edge Code
השלב הבא - שוב, אולי (לא אולי) יהיו כאן דברים (הרבה) שאתה יודע, אבל אתה יכול להשיג מזה הרבה.
אני אישית לא גמרתי לקרוא את הספר, אבל רפרפתי על מה שלא קראתי, וזה נראה מעולה.

שלב ב':
תתעדכן לגרסאות הנוכחיות דרך האתר הזה ועוד אחרים באנגלית.

שלב ג':
עכשיו אתה מוכן כבר לעבור לשלב הבא.
- PHP Objects, Patterns and Practice
רמה גבוהה יחסית. ספר פשוט מעולה. האנגלית כאן כבר מתחילה להיות קשה יותר, אבל בתקווה שעד אז האנגלית שלך תשתפר עד לרמה הזאת (אם עוד לא קרה).
אני קורא את הספר הזה עכשיו, ופשוט אין לי מילים.
- Expert PHP and MySQL
אני מחזיק בספר, אבל עוד לא הגעתי אליו. למיטב הבנתי (ולאחר רפרוף ברשימת הפרקים המורחבת, שאת כמעט כולה לא הכי הבנתי), הספר כבר לוקח את התכנות שלך לרמה הבאה (ושוב, מזכיר דברים שאתה כבר יודע). שפה רשמית וגבוהה קצת יותר.

שלב ד':
סורי, עוד לא הגעתי לפה, לא יכול לעזור לך. :-)
מה שכן, הייתי ממליץ לך בשלב הזה להתחיל לחקור מחדש את עולם הפיתוח בצד לקוח. (כן, יש עוד דברים מעניינים חוץ מצד שרת.) בשלב הזה כבר אני אתן לך רשימה נוספת של ספרים (אם תרצה). אולי עד אז אני כבר אכתוב את מה שאני מתכנן, ואז זה יהיה עוד יותר טוב.
יש עוד כל מיני נושאים חשובים בצד שרת, כמו CMS (יש לי רשימת ספרים קטנה שעוד לא קראתי) ופריימו'ורקים (בתקווה שלקראת סוף החודש הזה כבר יצא הספר הרשמי על Laravel 4, ואני אתחיל לתרגם אותו).

בהצלחה לך! :-)

avatar ענה phpon ב 07 למאי 2013 #

אשמח לקבל ספרים בMvc oop וכל זה!
+כדאי להתחיל לעבור בדוקומנטציה? ואם כן מאיפה בערך?
ודרך אגב, המדריך בוובמאסטר טוב?

intval (כי הבנתי שהוא שלך חחחח לפי כמות המדריכים העצומה)
כמה הצעות לאתר: מערכת מוניטין, נגיד על תשובה נכונה, המשתמש יקבל מוניטין(אם כל הדברים הללו קיימים אז סליחה מראש..)
תיוג משתמשים.

ואוראל תודה ענקית מלך! אני אקרא את כל הספרים הללו(בתקווה כמובן :D)
http://www.amazon.com/PHP-MySQL-Web-Development-Edition/dp/0321833899/ref=dp_ob_title_bk
בקרוב החמישי..

avatar ענה OrelBeY ב 07 למאי 2013 #

MVC תחפש. יש ב"אינטרנט ישראל" (ונראה לי גם פה) - וביחד הם מסבירים נהדר.
זו בחירה שלך. מה שכן, תמיד כשאתה לומד על פונקציה (או אם עוד לא קראת) - תקרא את התיעוד שלהם. עוזר מאוד.
בשמחה.
וכן, אם בקרוב זה עוד קצת פחות מחצי שנה. XD

avatar ענה phpon ב 07 למאי 2013 #

:D

זה העתיק לי משום מה..סליחה
עכשיו, אני רוצה לשדרג תמערכת הרשמה, ולבנות אחת בעצמי.
הבעייה שהבנתי שאני צריך ללמוד mail ואני מגיע לזה רק בעוד 5 פרקים..
ובשביל שהמערכת הזאצ באמת תפעול חייבים מסד? (הכוונה שכיאלו המערכת תשלח מייל לאישור, ואז תוכל להיכנס עם השם הזה במערכת כניסה.

avatar ענה yonikal56 ב 07 למאי 2013 #

חייב מסד לשמירת הנתונים בשביל לבדוק אותם ובשביל לשנות אותם נגיד עם זו עיר וירטואלית אז לעדכן כשמרוויחים כסף.